package br.com.SGF.domain;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;


@SuppressWarnings("serial")
@Entity
@Table(name = "cadastro_cliente")
@NamedQueries({
	@NamedQuery(name = "Cliente.listar", query = "SELECT cliente FROM ClienteDomain cliente"),
	@NamedQuery(name = "Cliente.obterCodigo", query = "SELECT cliente  FROM ClienteDomain cliente where cliente.codCliente = :codigo") })

public class ClienteDomain implements Serializable{

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "cli_id")
	private int codCliente;

	@Column(name = "cli_nome", length = 50, nullable = false)
	private String nome;

	@Column(name = "cli_endereco", length = 50, nullable = false)
	private String endereco;

	@Column(name = "cli_numero", length = 5, nullable = false)
	private String numero;

	@Column(name = "cli_bairro", length = 50, nullable = false)
	private String bairro;

	@Column(name = "cli_telefone", length = 13, nullable = false)
	private String telefone;

	
	@Column(name = "cli_cpf", length = 14, nullable = false, unique = true)
	private String cpf;

	@Column(name = "cli_rg", length = 13, nullable = false)
	private String rg;

	@Column(name = "cli_cep", length = 10, nullable = false)
	private String cep;
	
	@Temporal(TemporalType.DATE)
	@Column (name = "cli_data_alteracao")
	private Date dataAlteracao;
	
	@Column(name = "cli_inativo", columnDefinition = "tinyint default false")
	private boolean inativo;

	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "cli_cid_id", referencedColumnName = "cid_id")
	private CidadeDomain cidade = new CidadeDomain();

	
	

	public Date getDataAlteracao() {
		return dataAlteracao;
	}



	public void setDataAlteracao(Date dataAlteracao) {
		this.dataAlteracao = dataAlteracao;
	}



	public int getCodCliente() {
		return codCliente;
	}



	public void setCodCliente(int codCliente) {
		this.codCliente = codCliente;
	}



	public String getNome() {
		return nome;
	}



	public void setNome(String nome) {
		this.nome = nome;
	}



	public String getEndereco() {
		return endereco;
	}



	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}



	public String getNumero() {
		return numero;
	}



	public void setNumero(String numero) {
		this.numero = numero;
	}



	public String getBairro() {
		return bairro;
	}



	public void setBairro(String bairro) {
		this.bairro = bairro;
	}



	public String getTelefone() {
		return telefone;
	}



	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}



	public String getCpf() {
		return cpf;
	}



	public void setCpf(String cpf) {
		this.cpf = cpf;
	}



	public String getRg() {
		return rg;
	}



	public void setRg(String rg) {
		this.rg = rg;
	}



	public String getCep() {
		return cep;
	}



	public void setCep(String cep) {
		this.cep = cep;
	}



	public boolean isInativo() {
		return inativo;
	}



	public void setInativo(boolean inativo) {
		this.inativo = inativo;
	}



	public CidadeDomain getCidade() {
		return cidade;
	}



	public void setCidade(CidadeDomain cidade) {
		this.cidade = cidade;
	}



	@Override
	public String toString() {
		return "ClienteDomain [codCliente=" + codCliente + ", nome=" + nome
				+ ", sobrenome=" + ", endereco=" + endereco
				+ ", numero=" + numero + ", bairro=" + bairro + ", telefone="
				+ telefone + ", cpf=" + cpf + ", rg=" + rg + ", cep=" + cep
				+ ", cidade=" + cidade + "]";
	}
	
	

}
